// 封装axios：请求头设置,请求拦截,响应拦截
import axios from 'axios';
import QS from 'qs';
// import { Message } from 'element-ui';

// 环境的切换(模拟真实开发)
// process.env.NODE_ENV == 'development'
if (process.env.NODE_ENV == 'development') {    
    axios.defaults.baseURL = 'http://localhost:12306/api';} 
else if (process.env.NODE_ENV == 'debug') {    
    axios.defaults.baseURL = 'http://localhost:12306/api';
} 
else if (process.env.NODE_ENV == 'production') {    
    axios.defaults.baseURL = 'http://localhost:12306/api';
}
// 设置请求超时
axios.defaults.timeout = 10000;
// 请求头设置
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
// 请求拦截
axios.interceptors.request.use(    
    config => {        
        // 模拟token(一般把token存在localStorage或者cookie)
        const token = localStorage.getItem('__DC_STAT_UUID')
        if (token !== '') {
            // console.log('token:',token);
        }        
        return config;
    },    
    error => {     
        return Promise.reject(error);
    }
)
// 响应拦截
axios.interceptors.response.use(    
    response => {   
        // 如果返回的状态码为200，说明接口请求成功，可以正常拿到数据     
        // 否则的话抛出错误
        if (response.status === 200) {
            console.log('status为200');          
            return Promise.resolve(response);        
        } else {  
            console.log('status不为200');           
            return Promise.reject(response);        
        }    
    },
    error => {            
        if (error.response.status) {
            console.log('error.response.status',error.response.status);           
            switch (error.response.status) {                
                // 401: 未鉴权    
                case 401:                    
                    window.location.href = '/#/index';
                    break;
                // 403 token过期
                case 403:
                    // 弹窗提示
                    break;
                // 404路径不存在
                case 404:
                    // 弹窗提示
                    console.log('404',error.response.status);
                    break;
                default:
                    // 弹窗提示(其它报错)
            }
            return Promise.reject(error.response);
        }
    }
);

export default axios;
